<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-equiv="Content-Language" content="zh-CN"><link href="stylesheet.css" media="all" rel="stylesheet" type="text/css">
<title>几何类型</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head><body class="SECT1">
<div>
<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><th colspan="5" align="center" valign="bottom">PostgreSQL 8.2.3 中文文档</th></tr>
<tr><td width="10%" align="left" valign="top"><a href="datatype-boolean.html" accesskey="P">后退</a></td><td width="10%" align="left" valign="top"><a href="datatype.html">快退</a></td><td width="60%" align="center" valign="bottom">章8. Data Types</td><td width="10%" align="right" valign="top"><a href="datatype.html">快进</a></td><td width="10%" align="right" valign="top"><a href="datatype-net-types.html" accesskey="N">前进</a></td></tr>
</table>
<hr align="LEFT" width="100%"></div>
<div class="SECT1"><h1 class="SECT1"><a name="DATATYPE-GEOMETRIC">8.7. 几何类型</a></h1>
<p>几何数据类型表示二维的平面物体。<a href="datatype-geometric.html#DATATYPE-GEO-TABLE">表8-16</a>显示了 PostgreSQL 里面可用的几何类型。最基本的类型：点，是其它类型的基础。</p>
<div class="TABLE"><a name="DATATYPE-GEO-TABLE"></a>
<p><b>表8-16. 几何类型</b></p>
<table border="1" class="CALSTABLE"><col><col><col><col>
<thead>
<tr><th>名字</th><th>存储空间</th><th>说明</th><th>表现形式</th></tr>
</thead>
<tbody>
<tr><td><tt class="TYPE">point</tt></td><td>16 字节</td><td>平面中的点</td><td>(x,y)</td></tr>
<tr><td><tt class="TYPE">line</tt></td><td>32 字节</td><td>(无穷)直线(未完全实现)</td><td>((x1,y1),(x2,y2))</td></tr>
<tr><td><tt class="TYPE">lseg</tt></td><td>32 字节</td><td>(有限)线段</td><td>((x1,y1),(x2,y2))</td></tr>
<tr><td><tt class="TYPE">box</tt></td><td>32 字节</td><td>矩形</td><td>((x1,y1),(x2,y2))</td></tr>
<tr><td><tt class="TYPE">path</tt></td><td>16+16n 字节</td><td>闭合路径(与多边形类似)</td><td>((x1,y1),...)</td></tr>
<tr><td><tt class="TYPE">path</tt></td><td>16+16n 字节</td><td>开放路径</td><td>[(x1,y1),...]</td></tr>
<tr><td><tt class="TYPE">polygon</tt></td><td>40+16n 字节</td><td>多边形(与闭合路径相似)</td><td>((x1,y1),...)</td></tr>
<tr><td><tt class="TYPE">circle</tt></td><td>24 字节</td><td>圆</td><td>&lt;(x,y),r&gt; (圆心和半径)</td></tr>
</tbody>
</table>
</div>
<p>我们有一系列丰富的函数和操作符可用来进行各种几何计算，如拉伸、转换、旋转、计算相交等。它们在<a href="functions-geometry.html">节9.10</a>里有解释。</p>
<div class="SECT2"><h2 class="SECT2"><a name="AEN5354">8.7.1. 点</a></h2><a name="AEN5356"></a>
<p>点是几何类型的基本二维构造单位。用下面语法描述 <tt class="TYPE">point</tt> 的数值：</p>
<pre class="SYNOPSIS">( <tt class="REPLACEABLE"><i>x</i></tt>, <tt class="REPLACEABLE"><i>y</i></tt> )
  <tt class="REPLACEABLE"><i>x</i></tt>, <tt class="REPLACEABLE"><i>y</i></tt></pre>
<p>这里的 <tt class="REPLACEABLE"><i>x</i></tt> 和 <tt class="REPLACEABLE"><i>y</i></tt> 是用浮点数表示的点的坐标。</p>
</div>
<div class="SECT2"><h2 class="SECT2"><a name="AEN5367">8.7.2. 线段</a></h2><a name="AEN5369"></a><a name="AEN5371"></a>
<p>线段(<tt class="TYPE">lseg</tt>)是用一对点来代表的。<tt class="TYPE">lseg</tt> 的值用下面语法声明：</p>
<pre class="SYNOPSIS">( ( <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt> ) , ( <tt class="REPLACEABLE"><i>x2</i></tt>, <tt class="REPLACEABLE"><i>y2</i></tt> ) )
  ( <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt> ) , ( <tt class="REPLACEABLE"><i>x2</i></tt>, <tt class="REPLACEABLE"><i>y2</i></tt> )
    <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt>, <tt class="REPLACEABLE"><i>x2</i></tt>, <tt class="REPLACEABLE"><i>y2</i></tt></pre>
<p>这里的 <tt class="LITERAL">(<tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt>)</tt> 和 <tt class="LITERAL">(<tt class="REPLACEABLE"><i>x2</i></tt>, <tt class="REPLACEABLE"><i>y2</i></tt>)</tt> 是线段的端点。</p>
</div>
<div class="SECT2"><h2 class="SECT2"><a name="AEN5395">8.7.3. 矩形</a></h2><a name="AEN5397"></a><a name="AEN5399"></a>
<p>矩形是用一对对角点来表示的。<tt class="TYPE">box</tt> 的值用下面语法声明：</p>
<pre class="SYNOPSIS">( ( <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt> ) , ( <tt class="REPLACEABLE"><i>x2</i></tt>, <tt class="REPLACEABLE"><i>y2</i></tt> ) )
  ( <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt> ) , ( <tt class="REPLACEABLE"><i>x2</i></tt>, <tt class="REPLACEABLE"><i>y2</i></tt> )
    <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt>, <tt class="REPLACEABLE"><i>x2</i></tt>, <tt class="REPLACEABLE"><i>y2</i></tt></pre>
<p>这里的 <tt class="LITERAL">(<tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt>)</tt> 和 <tt class="LITERAL">(<tt class="REPLACEABLE"><i>x2</i></tt>, <tt class="REPLACEABLE"><i>y2</i></tt>)</tt> 是矩形的一对对角点。</p>
<p>矩形的输出使用第一种语法。在输入时将按先右上角后左下角的顺序重新排列。你也可以输入另外一对对角点，但存储时将计算出左下角和右上角然后再存储。</p>
</div>
<div class="SECT2"><h2 class="SECT2"><a name="AEN5423">8.7.4. 路径</a></h2><a name="AEN5425"></a>
<p>路径由一系列连接的点组成。路径可能是<i class="FIRSTTERM">开放</i>的，也就是认为列表中第一个点和最后一个点没有连接，也可能是<i class="FIRSTTERM">闭合</i>的，这时认为第一个和最后一个点连接起来。</p>
<p><tt class="TYPE">path</tt>的数值用下面语法声明：</p>
<pre class="SYNOPSIS">( ( <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt> ) , ... , ( <tt class="REPLACEABLE"><i>xn</i></tt>, <tt class="REPLACEABLE"><i>yn</i></tt> ) )
[ ( <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt> ) , ... , ( <tt class="REPLACEABLE"><i>xn</i></tt>, <tt class="REPLACEABLE"><i>yn</i></tt> ) ]
  ( <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt> ) , ... , ( <tt class="REPLACEABLE"><i>xn</i></tt>, <tt class="REPLACEABLE"><i>yn</i></tt> )
  ( <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt>   , ... ,   <tt class="REPLACEABLE"><i>xn</i></tt>, <tt class="REPLACEABLE"><i>yn</i></tt> )
    <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt>   , ... ,   <tt class="REPLACEABLE"><i>xn</i></tt>, <tt class="REPLACEABLE"><i>yn</i></tt>    </pre>
<p>这里的点是组成路径的线段的端点。方括弧(<tt class="LITERAL">[]</tt>)表明一个开放的路径，圆括弧(<tt class="LITERAL">()</tt>)表明一个闭合的路径。</p>
<p>路径的输出使用第一种语法输出。</p>
</div>
<div class="SECT2"><h2 class="SECT2"><a name="AEN5456">8.7.5. 多边形</a></h2><a name="AEN5458"></a>
<p>多边形由一系列点代表(多边形的顶点)。多边形可以认为与闭合路径一样，但是存储方式不一样而且有自己的一套支持函数。</p>
<p><tt class="TYPE">polygon</tt> 的数值用下列语法声明：</p>
<pre class="SYNOPSIS">( ( <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt> ) , ... , ( <tt class="REPLACEABLE"><i>xn</i></tt>, <tt class="REPLACEABLE"><i>yn</i></tt> ) )
  ( <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt> ) , ... , ( <tt class="REPLACEABLE"><i>xn</i></tt>, <tt class="REPLACEABLE"><i>yn</i></tt> )
  ( <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt>   , ... ,   <tt class="REPLACEABLE"><i>xn</i></tt>, <tt class="REPLACEABLE"><i>yn</i></tt> )
    <tt class="REPLACEABLE"><i>x1</i></tt>, <tt class="REPLACEABLE"><i>y1</i></tt>   , ... ,   <tt class="REPLACEABLE"><i>xn</i></tt>, <tt class="REPLACEABLE"><i>yn</i></tt>    </pre>
<p>这里的点是多边形的端点。</p>
<p>多边形输出使用第一种语法。</p>
</div>
<div class="SECT2"><h2 class="SECT2"><a name="AEN5481">8.7.6. 圆</a></h2><a name="AEN5483"></a>
<p>圆由一个圆心和一个半径标识。<tt class="TYPE">circle</tt> 的数值用下面语法表示：</p>
<pre class="SYNOPSIS">&lt; ( <tt class="REPLACEABLE"><i>x</i></tt>, <tt class="REPLACEABLE"><i>y</i></tt> ) , <tt class="REPLACEABLE"><i>r</i></tt> &gt;
( ( <tt class="REPLACEABLE"><i>x</i></tt>, <tt class="REPLACEABLE"><i>y</i></tt> ) , <tt class="REPLACEABLE"><i>r</i></tt> )
  ( <tt class="REPLACEABLE"><i>x</i></tt>, <tt class="REPLACEABLE"><i>y</i></tt> ) , <tt class="REPLACEABLE"><i>r</i></tt>
    <tt class="REPLACEABLE"><i>x</i></tt>, <tt class="REPLACEABLE"><i>y</i></tt>, <tt class="REPLACEABLE"><i>r</i></tt>  </pre>
<p>这里的 <tt class="LITERAL">(<tt class="REPLACEABLE"><i>x</i></tt>, <tt class="REPLACEABLE"><i>y</i></tt>)</tt> 是圆心，<tt class="REPLACEABLE"><i>r</i></tt> 是半径。</p>
<p>圆的输出用第一种格式。</p>
</div>
</div>
<div>
<hr align="LEFT" width="100%">
<table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<tr><td width="33%" align="left" valign="top"><a href="datatype-boolean.html" accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">首页</a></td><td width="33%" align="right" valign="top"><a href="datatype-net-types.html" accesskey="N">前进</a></td></tr>
<tr><td width="33%" align="left" valign="top">布尔类型</td><td width="34%" align="center" valign="top"><a href="datatype.html" accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">网络地址类型</td></tr>
</table>
</div>
</body></html>